# 导入 render 和 redirect
from django.shortcuts import render, redirect
from django.shortcuts import render

import ollama
# 导入 openai API
#import openai
# 从 secret_key 文件导入生成的 API 密钥
#from .secret_key import API_KEY
# 从 secret_key 文件加载 API 密钥
#openai.api_key = API_KEY

# 这是处理主页逻辑的主页视图
def home(request):
    try:
        # 如果会话中没有包含 messages 键，则创建一个
        if 'messages' not in request.session:
            request.session['messages'] = [
                {"role": "system", "content": "您现在正在与用户聊天，为他们提供全面、简短和简洁的答案."},
            ]

        if request.method == 'POST':
            # 从表单获取提示
            prompt = request.POST.get('prompt')
            # 从表单获取温度
            temperature = float(request.POST.get('temperature', 0.1))
            # 将提示添加到 messages 列表
            request.session['messages'].append({"role": "user", "content": prompt})
            # 将会话设置为已修改
            request.session.modified = True
            # 调用 ollama.chat
            res = ollama.chat(
                model="deepseek-r1:1.5b",
                messages=request.session['messages'],
                stream=False
            )

            formatted_response = res.message.content

            # 调用 openai API
#            response = openai.ChatCompletion.create(
#                model="gpt-3.5-turbo",
#                messages=request.session['messages'],
#                temperature=temperature,
#                max_tokens=1000,
#            )
            # 格式化响应
#            formatted_response = response['choices'][0]['message']['content']
            # 将响应添加到 messages 列表
            request.session['messages'].append({"role": "assistant", "content": formatted_response})
            request.session.modified = True
            # 重定向到主页
            context = {
                'messages': request.session['messages'],
                'prompt': '',
                'temperature': temperature,
            }
            return render(request, 'assistant/home.html', context)
        else:
            # 如果请求不是 POST 请求，渲染主页
            context = {
                'messages': request.session['messages'],
                'prompt': '',
                'temperature': 0.1,
            }
            return render(request, 'assistant/home.html', context)
    except Exception as e:
        print(e)
        # 如果有错误，重定向到错误处理器
        return redirect('error_handler')

def new_chat(request):
    # 清除 messages 列表
    request.session.pop('messages', None)
    return redirect('home')

# 这是处理错误的视图
def error_handler(request):
    return render(request, 'assistant/404.html')
